#ifndef MOTEUR_H
#define MOTEUR_H

#include <queue>
#include <QObject>

class Jeu;

#include "message.h"

class Moteur : public QObject {
    Q_OBJECT
    
    public:
        Moteur(Jeu * parent);
        virtual ~Moteur() {}

        void envoyerMessage(Message m);
        virtual void executer() = 0;

        Jeu * getParent();

    protected:
        Jeu * parent;

        std::queue<Message> fileMessages;

        virtual void traiterMessage(Message m) = 0;

    public:
        Moteur * moteurSon;
        Moteur * moteurGraphique;
        Moteur * moteurReseau;
        Moteur * moteurJeu;
};

#endif // MOTEURJEU_H
